package labox.innovation.netcore;

import java.nio.ByteBuffer;

/**
 * 客户端抽象模型
 * 
 */
public abstract class MMOClient<T extends MMOConnection> {
	
	private final T _con;

	public MMOClient(final T con) {
		_con = con;
	}

	public T getConnection() {
		return _con;
	}

	/**
	 * 解密过程
	 * @param buf
	 * @param size
	 * @return
	 */
	public abstract boolean decrypt(final ByteBuffer buf, final int size);

	/**
	 * 加密过程
	 * @param buf
	 * @param size
	 * @return
	 */
	public abstract boolean encrypt(final ByteBuffer buf, final int size);

	/**
	 * 客户端关闭socket的通知事件
	 */
	protected abstract void onDisconnection();

	/**
	 * 客户端强迫关闭socket的通知事件
	 */
	protected abstract void onForcedDisconnection();
}
